Models may be used to simulate physical systems. For example, a graphical model may be used to represent a complex control system for a plant. The graphical model may include entities, such as blocks, that reference executable code for performing operations of the control system when the graphical model executes. The blocks can vary in type and/or number and may be connected together to build large, complex models (e.g., models including hundreds or more interconnected blocks).
Users may have trouble grasping interactions among model entities as models become large and/or complex. For example, a user may inadvertently configure inputs to a block in a way that causes the block to operate in a nonlinear manner even though the user may have intended to configure the block so as to operate in a linear manner.
The user may attempt to verify operation of the model that includes the nonlinear behavior for the block. For example, the user may attempt to verify the operation of the model using a verification application that handles only linear operations. The verification application may produce an error when the user runs the application against the model that includes the nonlinear behavior. Equivalently a verification application may be capable of handling operations that are either linear or piecewise linear relationships of input variables and fail when a nonlinear relationship cannot be expressed as such a piecewise linear relationship.
The user may need to manually identify and correct the source of the nonlinear behavior before rerunning the verification application. Attempting to locate a source of model complexity, e.g., nonlinear behavior, can be difficult because some complexities can propagate from one entity to another. For example, if a first block outputs a nonlinear value to a second block, the second block may also output a nonlinear value after the second block processes the incoming value. A user attempting to identify the source of the nonlinear value, may mistakenly assume that the second block is the source of the nonlinear behavior when, in fact, it is a block that is upstream from the second block, namely the first block, that is the source of the nonlinear behavior.
Difficulties associated with identifying and remedying model complexities may impair the ability of users to verify and implement models containing complexities that impair model verification, such as nonlinear variables that are produced by nonlinear operations, lookup tables, timers, counters, pointer aliases, etc.